import request from '../utils/request'

/**
 * 创建评论
 * @param {Object} data - 评论数据
 * @returns {Promise}
 */
export function createComment(data) {
  return request({
    url: '/comments',
    method: 'post',
    data
  })
}

/**
 * 更新评论
 * @param {Number} id - 评论ID
 * @param {Object} data - 评论数据
 * @returns {Promise}
 */
export function updateComment(id, data) {
  return request({
    url: `/comments/${id}`,
    method: 'put',
    data
  })
}

/**
 * 获取评论详情
 * @param {Number} id - 评论ID
 * @returns {Promise}
 */
export function getCommentDetail(id) {
  return request({
    url: `/comments/${id}`,
    method: 'get'
  })
}

/**
 * 删除评论
 * @param {Number} id - 评论ID
 * @returns {Promise}
 */
export function deleteComment(id) {
  return request({
    url: `/comments/${id}`,
    method: 'delete'
  })
}

/**
 * 获取回答下的评论列表
 * @param {Number} answerId - 回答ID
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getComments(answerId, params = {}) {
  return request({
    url: `/comments/answer/${answerId}`,
    method: 'get',
    params
  })
}

/**
 * 获取最新评论列表
 * @param {Number} limit - 限制数量
 * @returns {Promise}
 */
export function getLatestComments(limit = 10) {
  return request({
    url: '/comments/latest',
    method: 'get',
    params: { limit }
  })
}

/**
 * 获取评论统计信息
 * @returns {Promise}
 */
export function getCommentCount() {
  return request({
    url: '/comments/count',
    method: 'get'
  })
}

/**
 * 获取当前用户的评论列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getUserComments(params = {}) {
  return request({
    url: '/comments/my',
    method: 'get',
    params
  })
}

/**
 * 评论点赞
 * @param {Object} data - 点赞数据 {commentId, voteType}
 * @returns {Promise}
 */
export function voteComment(data) {
  return request({
    url: '/comment-votes',
    method: 'post',
    data
  })
}

/**
 * 取消评论点赞
 * @param {Number} commentId - 评论ID
 * @returns {Promise}
 */
export function cancelVoteComment(commentId) {
  return request({
    url: `/comment-votes/comment/${commentId}`,
    method: 'delete'
  })
}

/**
 * 检查评论点赞状态
 * @param {Number} commentId - 评论ID
 * @returns {Promise}
 */
export function checkCommentVoteStatus(commentId) {
  return request({
    url: `/comment-votes/comment/${commentId}/status`,
    method: 'get'
  })
}

/**
 * 创建回答评论（兼容旧版API的方法）
 * @param {Object} data - 评论数据
 * @returns {Promise}
 */
export function createAnswerComment(data) {
  return createComment(data)
}

/**
 * 删除回答评论（兼容旧版API的方法）
 * @param {Number} id - 评论ID
 * @returns {Promise}
 */
export function deleteAnswerComment(id) {
  return deleteComment(id)
}

/**
 * 获取回答评论列表（兼容旧版API的方法）
 * @param {Number} answerId - 回答ID
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getAnswerComments(answerId, params = {}) {
  return getComments(answerId, params)
} 